Health Cloud Medications System API - Implementation Template
Field mapping
Medication
| FHIR Field Name | Salesforce Object | Salesforce Field Name | Notes | 
|---|---|---|---|
| Identifier.use | Identifier | IdUsageType | The identifier information for a medication is represented as Identifier records that reference the medication record using their Identifier.ParentRecordId field. | 
| Identifier.system | Identifier | SourceSystem | |
| Identifier.value | Identifier | IdValue | |
| Identifier.type.coding | Identifier | IdTypeId | |
| code.coding | Medication | MedicationCodeId | |
| code.text | Medication | CodeSetBundle -> Name | |
| status | Medication | Status | While FHIR defines medication.status as a code set bundle, the Salesforce implementation of Medication.Status is picklist. | 
| manufacturer | Medication | ManufacturerId | |
| form.coding | Medication | MedicationFormId | |
| amount.numerator.value | Medication | QuantityNumerator | Salesforce doesn’t support a native quantity data type, the medication.amount field is flattened into a set of numerator, denominator, and unit fields. | 
| amount.numerator.unit | UnitOfMeasure | UnitCode | |
| amount.denominator.value | Medication | QuantityDenominator | |
| amount.denominator.unit | UnitOfMeasure | UnitCode | 
MedicationStatement
| FHIR Field Name | Salesforce Object | Salesforce Field Name | Notes | 
|---|---|---|---|
| Identifier.use | Identifier | IdUsageType | The identifier information for a medication statement is represented as Identifier records that reference the MedicationStatement record using their Identifier.ParentRecordId field. | 
| Identifier.system | Identifier | SourceSystem | |
| Identifier.value | Identifier | IdValue | |
| Identifier.type.coding | Identifier | IdTypeId | |
| status | MedicationStatement | Status | While FHIR defines MedicationStatement.status as a code set bundle, the Salesforce implementation of MedicationStatement.Status is picklist. | 
| medicationCodeableConcept | MedicationStatement | MedicationCodeId | While the individual fields MedicationStatement.MedicationCodeId and MedicationStatement.MedicationId are zero-to-one references, the set {MedicationStatement.MedicationCodeId, MedicationStatement.MedicationId} is a one-to-one resource. | 
| basedOn | MedicationStatement | MedicationRequestId | While FHIR defines medicationStatement.basedOn as a zero-to-many resource, the Salesforce implementation of MedicationStatement.MedicationRequestId is zero-to-one. | 
| context | MedicationStatement | ClinicalEncounterId | |
| subject | MedicationStatement | PatientId | The Salesforce implementation doesn’t support references to care plan or service request records. | 
| effectiveDateTime | MedicationStatement | StartDateTime | |
| effectivePeriod | MedicationStatement | StartDateTime EndDateTime | Because Salesforce doesn’t support a native period data type, the implementation of medicationStatement.effective.effectivePeriod is flattened into a set of start and end dates. | 
| dateAsserted | MedicationStatement | AssertionDateTime | 
MedicationRequest
| FHIR Field Name | Salesforce Object | Salesforce Field Name | Notes | 
|---|---|---|---|
| Identifier.use | Identifier | IdUsageType | The identifier information for a medication request is represented as Identifier records that reference the MedicationRequest record using their Identifier.ParentRecordId field. | 
| Identifier.system | Identifier | SourceSystem | |
| Identifier.value | Identifier | IdValue | |
| Identifier.type.coding | Identifier | IdTypeId | |
| status | MedicationRequest | Status | While FHIR defines MedicationRequest.status as a code set bundle, the Salesforce implementation of MedicationRequest.Status is picklist. | 
| statusReason | MedicationRequest | StatusReasonCodeId | |
| intent | MedicationRequest | Type | While FHIR defines MedicationRequest.intent as a code set bundle, the Salesforce implementation of MedicationRequest.Type is picklist. | 
| medicationCodeableConcept | MedicationRequest | MedicationCodeId | |
| medicationReference | MedicationRequest | MedicationId | |
| subject | MedicationRequest | PatientId | |
| authoredOn | MedicationRequest | PrescribedDate | |
| reasonCode | MedicationRequest | ReasonCodeId | |
| reasonReference | MedicationRequest | ReasonReferenceId | |
| dosageInstruction | PatientMedicationDosage | The dosage information for a medication request is represented as PatientMedicationDosage records that reference the MedicationRequest record using theirPatientMedicationDosage.ParentRecordId field. | |
| dosageInstruction.sequence | PatientMedicationDosage | Sequence | |
| dosageInstruction.text | PatientMedicationDosage | Comments | |
| dosageInstruction.additionalInstruction.text | PatientMedicationDosage | AdditionalInstruction | |
| dosageInstruction.patientInstruction | PatientMedicationDosage | PatientInstruction | |
| dosageInstruction.asNeededBoolean | PatientMedicationDosage | IsAsNeeded | |
| dosageInstruction.site | PatientMedicationDosage | SiteId | |
| dosageInstruction.route | PatientMedicationDosage | RouteId | |
| dosageInstruction.method | PatientMedicationDosage | MethodId | |
| dosageInstruction.doseAndRate.type.coding.code | PatientMedicationDosage | DosageDefinitionType | |
| If DosageQuantityType == 'Dose Range' | |||
| dosageInstruction.doseAndRate.doseRange.low.value | PatientMedicationDosage | DosageQuantityNumerator | |
| dosageInstruction.doseAndRate.doseRange.low.unit | unitOfMeasure | UnitCode | |
| dosageInstruction.doseAndRate.doseRange.low.code | unitOfMeasure | UnitCode | |
| dosageInstruction.doseAndRate.doseRange.high.value | PatientMedicationDosage | DosageQuantityDenominator | |
| dosageInstruction.doseAndRate.doseRange.high.unit | unitOfMeasure | UnitCode | |
| dosageInstruction.doseAndRate.doseRange.high.code | unitOfMeasure | UnitCode | |
| else | |||
| dosageInstruction.doseAndRate.doseQuantity.value | PatientMedicationDosage | DosageQuantityNumerator | |
| dosageInstruction.doseAndRate.doseQuantity.unit | unitOfMeasure | UnitCode | |
| dosageInstruction.doseAndRate.doseQuantity.code | unitOfMeasure | UnitCode | |
| If DosageRateType == 'Frequency Range' | |||
| dosageInstruction.doseAndRate.rateRange.low.value | PatientMedicationDosage | DosageRateNumerator | |
| dosageInstruction.doseAndRate.rateRange.low.unit | unitOfMeasure | UnitCode | |
| dosageInstruction.doseAndRate.rateRange.low.code | unitOfMeasure | UnitCode | |
| dosageInstruction.doseAndRate.rateRange.high.value | PatientMedicationDosage | DosageRateDenominator | |
| dosageInstruction.doseAndRate.rateRange.high.unit | unitOfMeasure | UnitCode | |
| dosageInstruction.doseAndRate.rateRange.high.code | unitOfMeasure | UnitCode | |
| else if DosageRateType == 'Frequency Ratio') | |||
| dosageInstruction.doseAndRate.rateRatio.numerator.value | PatientMedicationDosage | DosageRateNumerator | |
| dosageInstruction.doseAndRate.rateRatio.numerator.code | unitOfMeasure | UnitCode | |
| dosageInstruction.doseAndRate.rateRatio.denominator.value | PatientMedicationDosage | DosageRateDenominator | |
| dosageInstruction.doseAndRate.rateRatio.denominator.value | unitOfMeasure | UnitCode | |
| else | |||
| dosageInstruction.doseAndRate.rateQuantity.value | PatientMedicationDosage | DosageRateNumerator | |
| dosageInstruction.doseAndRate.rateQuantity.unit | unitOfMeasure | UnitCode | |
| dosageInstruction.doseAndRate.rateQuantity.code | unitOfMeasure | UnitCode | 
Immunization
| FHIR Field Name | Salesforce Object | Salesforce Field Name | Notes | 
|---|---|---|---|
| Identifier.use | Identifier | IdUsageType | The identifier information for an immunization is represented as Identifier records that reference the PatientImmunization record using their Identifier.ParentRecordId field. | 
| Identifier.system | Identifier | SourceSystem | |
| Identifier.value | Identifier | IdValue | |
| Identifier.type.coding | Identifier | IdTypeId | |
| status | Immunization | Status | While FHIR defines immunization.status as a code set bundle, the Salesforce implementation of PatientImmunization.Status is picklist. | 
| statusReason | Immunization | StatusReasonCodeId | |
| vaccineCode | Immunization | VaccineCodeId | |
| patient | Immunization | PatientId | |
| encounter | Immunization | ClinicalEncounterId | |
| occurrenceDateTime | Immunization | VaccinationDate | |
| occurenceString | Immunization | VaccinationPeriod | |
| recorded | Immunization | RecordCreationDateTime | |
| primarySource | Immunization | IsRecordedByVaccinator | |
| reportOrigin | Immunization | InformationSourceId | |
| location | Immunization | FacilityId | |
| manufacturer | Immunization | Manufacturer | |
| lotNumber | Immunization | LotNumber | |
| expirationDate | Immunization | ExpirationDate | |
| site | Immunization | SiteId | |
| route | Immunization | RouteId | |
| doseQuantity.value | Immunization | Dose | The Salesforce equivalent of immunization.dose is represented used the fields PatientImmunization.Dose for the quantity and PatientImmunization.DoseUnitId for the unit. | 
| doseQuantity.code | unitOfMeasure | UnitCode | |
| performer.function | CarePerformer | ParentsRoleId | The performer information for an immunization is represented as CarePerformer records that reference the PatientImmunization record using their CarePerformer.ParentRecordId field. | 
| performer.actor | CarePerformer | PersonId | |
| reasonCode | Immunization | ReasonCodeId | |
| isSubpotent | Immunization | IsSubpotent | |
| subpotentReason | Immunization | SubpotencyReasonCodeId |